Qt 资源文件打开失败的问题
首先,Qt 的资源文件需要使用 Q_INIT_RESOURCE 宏进行初始化,参数为 qrc 文件的文件名,例如:
1Q_INIT_RESOURCE(theme); // 初始化 theme.qrc
2Q_INIT_RESOURCE(icon); // 初始化 icon.qrc并且,这个宏必须在全局命名空间下调用,例如:
1static inline void initResource()
2{
3 Q_INIT_RESOURCE(theme); // 初始化 theme.qrc
4 Q_INIT_RESOURCE(icon); // 初始化 icon.qrc
5}
6
7namespace DemoNamespace
8{
9
10class DemoClass
11{
12
13public:
14 DemoClass()
15 {
16 initResource(); // 调用初始化函数
17 }
18
19};
20
21};并且,可以使用 Q_CLEANUP_RESOURCE 宏来显式删除资源。
Q_INIT_RESOURCE仅在将资源构建为静态库时是必须的,在构建动态库和应用程序中时可以省略。
但是我遇到的是另一个问题 —— Qt 的资源集合文件不能重名
在库中创建了名为 theme.qrc 的资源集合文件,之后在应用程序中再次创建一个名为 theme.qrc 的资源集合文件。库的 theme.qrc 会失效。
这个问题仅在 Linux 上存在,而在 Windows 上不存在。因此无法确定是 Feature 还是 Bug。